//
//  YFStatusCell.swift
//  仿新浪微博
//
//  Created by 杨帆 on 16/7/6.
//  Copyright © 2016年 杨帆. All rights reserved.
//

import UIKit

// 微博Cell 的协议
@objc protocol YFStatusCellDelegate: NSObjectProtocol {

    // 微博Cell 选中URL 字符串
    @objc optional func statusCellDidSelectedURLString(cell: YFStatusCell, urlString: String)
}

// 微博 Cell
class YFStatusCell: UITableViewCell {
    
    // 代理属性
    weak var delegate: YFStatusCellDelegate?
    
    // 微博视图模型
    var viewModel: YFStatusViewModel? {
        didSet {
            // 微博文本
            statusLabel?.attributedText = viewModel?.statusAttrText
            // 姓名
            nameLabel.text = viewModel?.status.user?.screen_name
            
            // 设置会员图标 - 直接获取属性，不需要计算
            memberIconView.image = viewModel?.memberIcon
            
            // 认证图标
            vipIconView.image = viewModel?.vipIcon
            
            // 用户头像
            iconView.YF_setImage(urlString: viewModel?.status.user?.profile_image_url, placeholderImage: UIImage(named: "avatar_default_big"), isAvatar: true)
            
            // 底部工具栏
            toolBar.viewModel = viewModel
            
            // 配图视图视图模型
            pictureView.viewModel = viewModel
            
            // 设置被转发微博的文字
            retweetedLabel?.attributedText = viewModel?.retweetedAttrText
            
            // 设置来源
            sourceLabel.text = viewModel?.status.source
            
        }
    }


    // 头像
    @IBOutlet weak var iconView: UIImageView!
    // 姓名
    @IBOutlet weak var nameLabel: UILabel!
    // 会员图标
    @IBOutlet weak var memberIconView: UIImageView!
    // 时间
    @IBOutlet weak var timeLabel: UILabel!
    // 来源
    @IBOutlet weak var sourceLabel: UILabel!
    // 认证图标
    @IBOutlet weak var vipIconView: UIImageView!
    // 微博正文
    @IBOutlet weak var statusLabel: FFLabel!
    // 底部工具栏
    @IBOutlet weak var toolBar: YFStatusToolBar!
    
    // 配图视图
    @IBOutlet weak var pictureView: YFStatusPictureView!
    
    // 被转发微博的标签
    @IBOutlet weak var retweetedLabel: FFLabel?
    override func awakeFromNib() {
        super.awakeFromNib()
        
        // 离屏渲染 - 异步绘制
        self.layer.drawsAsynchronously = true
        
        // 使用'栅格化' 必须注意制定分辨率
        self.layer.rasterizationScale = UIScreen.main().scale
        
        // 设置微博文本代理
        statusLabel.delegate = self
        retweetedLabel?.delegate = self
    }

}

extension YFStatusCell: FFLabelDelegate {
    
    func labelDidSelectedLinkText(label: FFLabel, text: String) {
   
        // 判断是否是URL
        if !text.hasPrefix("http://") {
        
            return
        }
        
        delegate?.statusCellDidSelectedURLString?(cell: self, urlString: text)
        
    }
}
